PlantUML クラス図
定義
code:class.puml
@startuml
class クラス名
interface インターフェース名
enum 列挙名
@enduml
↓
https://scrapbox.io/files/633fd1c71e470a001da47887.png
関係
長くすれば線を長くすることができる
以下は一例
関連
--で定義
code:class-association.puml
@startuml
class クラス1
class クラス2
クラス1 -- クラス2
@enduml
↓
https://scrapbox.io/files/633fd2b3207200001d24c67c.png
集約
o-で定義
code:class-aggregation.puml
@startuml
class クラス1
class クラス2
クラス1 o-- クラス2
@enduml
↓
https://scrapbox.io/files/633fd32ac916230020e03e6f.png
コンポジション
*-で定義
code:class-composition.puml
@startuml
class クラス1
class クラス2
クラス1 *-- クラス2
@enduml
↓
https://scrapbox.io/files/633fd3a2944adb0022d82e5c.png
多重度
線の定義の前や後ろに定義することで多重度を定義できる
<クラス名> "<多重度>" <関係記号> "<多重度>" <クラス名>
code:class-multi.puml
@startuml
class クラス1
class クラス2
'関係
クラス1 "1" -- "1..*" クラス2
@enduml
↓
https://scrapbox.io/files/633fd62ea230170023593220.png
関係ラベル
関係に関する記述のあとに、コロンでクラス同士の関係ラベルを定義できる
<クラス名> "<多重度>" <関係記号> "<多重度>" <クラス名> : <関係>
code:class-relation-label.puml
@startuml
class クラス1
class クラス2
クラス1 "1" -- "1" クラス2 : 関係
@enduml
↓
https://scrapbox.io/files/6340e1af4a6110001e395987.png
方向を指定
関係の前か後ろに<や>をつけると方向を指定できる
code:class-relation-label-allow.puml
@startuml
class クラス1
class クラス2
クラス1 "1" -- "1" クラス2 : 関係 >
@enduml
↓
https://scrapbox.io/files/6340e2f7786e25001dc783f0.png
メソッド、フィールド
クラス名のあとにコロンを付けてメソッドやフィールドを記述する
()をつけるとメソッド扱い、付けない場合はフィールド扱いになる
code:class-method-field.puml
@startuml
class クラス1
クラス1 : hoge
クラス1 : fuga()
@enduml
↓
https://scrapbox.io/files/6340e48291466b001d6bde76.png
中括弧内に記述する方法もある
code:class-in.puml
@startuml
class クラス1 {
hoge
fuga()
}
@enduml
↓
https://scrapbox.io/files/6340e48291466b001d6bde76.png
{method}、{field}修飾子を指定すると、強制的にメソッドやフィールドとして指定できる
code:class-modifier.puml
@startuml
class クラス1 {
{field} フィールド (強制)
{method} メソッド
}
@enduml
アクセス修飾子
メソッドやフィールドの前に記号を定義すればアクセス修飾子を指定できる
code:class-access.puml
@startuml
class クラス1 {
+public
~package private
-private
+public()
~package private()
-private()
}
@enduml
↓
https://scrapbox.io/files/6340e9753a77f0001de4af9b.png
なお、これらの記号表示は次の記述でオフにすることができる
skinparam classAttributeIconSize 0
code:class-access-skinparam.puml
@startuml
skinparam classAttributeIconSize 0
class クラス1 {
+public
~package private
-private
+public()
~package private()
-private()
}
@enduml
↓
https://scrapbox.io/files/6340ea0c38b9b80023d78b48.png
静的・抽象修飾子
{static}や{abstract}で静的、抽象の修飾子を付けられる
メソッド及びフィールドで指定できる
code:class-static-abstract.puml
@startuml
class クラス1 {
{static} 静的
{abstract} 抽象
}
@enduml
↓
https://scrapbox.io/files/6340ee337ac7d40023bc6c8b.png
パッケージ
packageでパッケージを指定できる
パッケージは入れ子にできる
code:class-package.puml
@startuml
package パッケージ {
class クラス1 {
}
class クラス2
}
@enduml
↓
https://scrapbox.io/files/6340ef63786e25001dc7c9e4.png
パッケージは複数定義でき、パッケージ外から関係線を定義できる
その場合は後の方に定義を書く
code:class-package-multi.puml
@startuml
package パッケージ1 {
class クラス1
class クラス2
}
package パッケージ2 {
class クラス3
class クラス4
クラス1 -- クラス3
}
@enduml
↓
https://scrapbox.io/files/6340f01af19a7a001f2b03aa.png
関連クラス
関連クラスを定義することができる
code:class-relation-class.puml
@startuml
class クラス1
class クラス2
クラス1 "1..*" - "1..*" クラス2
(クラス1, クラス2) .. 中間クラス
class 中間クラス {
メソッド()
}
@enduml
↓
https://scrapbox.io/files/6340f3890d6eef001d045452.png
今回紹介した内容はほんの一部
詳細はPlantUMLのドキュメントサイトを参照。